#ifndef PSO_RUNNER_H
#define PSO_RUNNER_H

#include "Runner.h"
#include "..\PSO\Accelerate.h"
#include "..\PSO\Move.h"
#include <vector>

using namespace std;


class PSORunner: public Runner
{
	Accelerate *accelerator;
	Move *move;
	vector<vector<double>> velocity;
	vector<vector<int>> pbest;
	vector<int> gbest;
	vector<int> fpbest;
	int fgbest;

public:
	PSORunner(double weight, double c1, double c2, int iterNum, CoverageTable *ct);
	~PSORunner();
	void Initialize(int, int);
	int UpdateBest(vector<vector<int>>&,vector<int>&);
	int run(vector<vector<int>>&, vector<int>&);
	void clean();
};

#endif